在Word VBA环境中使用COM组件

完成COM组件的创建以后,在Word Visual Basic编辑器中引用它。[大谦MATLAB,dqmatlab点com]

在Word的Visual Basic编辑器中,在“工具”菜单中单击“引用…”选项,打开“引用”对话框,如图3-1所示。在列表框中选择“magicsquare 1.0 Type Library”选项,单击“确定”按钮。完成对组件的引用。

Document Image

图3-1 “引用”对话框

然后创建用户界面。现在添加一系列控件到空白的窗体上,完成对话框的创建。添加控件以后的窗体如图3-2所示。各控件的属性设置如表3-1所示。

Document Image

图3-2 界面设计

窗体和控件属性设置完毕以后,添加对象代码。这些代码将引用表3-1中的控件名和属性值。如果要对任何控件或属性给定不同的名称或值,则需要通过改变代码来体现这些改变。

表3-1 控件属性设置

控件类型 控件名称 属 性
TextBox txtSize
CommandButton cmdCreate Caption = 确 定
TextBox txtMagic ScrollBars = Both Multiline = True

下面的代码利用前面创建的magicsquare组件生成指定大小的魔方矩阵,并显示到窗体中的txtMagic控件中。

code.word vba
Private intSize As Integer              '保存以前矩阵的大小
Private Sub CommandButton1_Click()
  '本函数在"创建"按钮被按下时被调用
  '调用magicsquare方法,并显示魔方
  Dim myMagic As magicsquare.msq      'msq类的实例
  Set myMagic = New magicsquare.msq
  Dim y As Variant
  intSize = CInt(txtSize.Text)
  If intSize <= 0 Or myMagic Is Nothing Then Exit Sub
  On Error GoTo Handle_Error
  myMagic.magicsquare 1, y, intSize
  ShowMatrix y
  Exit Sub
Handle_Error:
  MsgBox(Err.Description)
End Sub
Private Sub ShowMatrix(y As Variant)
  '本函数用y的值填充txtMagic文本框
  '假设y包含一个二维数组
  Dim lngI As Long
  Dim lngJ As Long
  Dim strRow As String

  On Error GoTo Handle_Error
  For lngI = 1 To intSize
    For lngJ = 1 To intSize
      strRow = strRow & CStr(y(lngI, lngJ)) & Chr(9)
    Next lngJ
    strRow = strRow & Chr(13) & Chr(10)
  Next lngI
  txtMagic = strRow
  Exit Sub
Handle_Error:
  MsgBox(Err.Description)
End Sub

运行程序,在输入框中输入一个正整数并单击“确定”按钮,显示一个指定大小的魔方。效果如图3-3所示。

Document Image

图3-3 运行结果